import re
from wordcloud import WordCloud
import matplotlib.pyplot as plt
import pandas as pd
import jieba
import numpy as np
from PIL import Image

# 读取原始数据
raw_comments = pd.read_csv('./data/coms.csv')
raw_comments.head()
# 导入停用词表
with open('./data/stopword.txt', encoding='utf8') as s:
    stopwords = set([line.replace('\n', ' ') for line in s.readline()])


# 传入apply的预处理函数，完成中文提取、分词以及多余空格剔除
def preprocessing(c):
    c = [word for word in jieba.cut(' '.join(re.findall('[\u4e00-\u9fa5]+', c))) if
         word != ' ' and word not in stopwords]
    return ' '.join(c)


# 将所有语料按空格拼接为一整段文字
comments = ' '.join(raw_comments['评论'].apply(preprocessing))
# ---------生产词云----------
usa_mask = np.array(Image.open('./data/flower.png'))
# 从文本中生成词云图
wordcloud = WordCloud(background_color='white',  # 背景色为白色
                      height=400,  # 高度设置为400
                      width=800,  # 宽度设置为800
                      scale=4,  # 清晰度，如果你想，也可以设置为64（前提是你的电脑带的动）
                      prefer_horizontal=0.2,  # 调整水平显示倾向程度为0.2
                      max_words=500,  # 设置最大显示字数为500
                      relative_scaling=0.5,  # 设置字体大小与词频的关联程度为0.5
                      max_font_size=100,  # 缩小最大字体为100
                      font_path='./data/ZiYuYongSongTi-2.ttf',
                      mask=usa_mask,
                      ).generate(comments)
plt.rcParams['font.sans-serif'] = ['Kaitt', 'SimHei']
plt.figure(figsize=[8, 4])
plt.imshow(wordcloud)
plt.axis('off')
# 保存到本地
plt.savefig('./data/ciyun.jpg', dpi=800, bbox_inches='tight')
plt.show()
'''
由图表可知：
1. 商家服务质量很好
'''
